This invention relates to data storage drives of an automated data storage library which stores portable data storage cartridges in storage shelves and transports the portable data storage cartridges between the storage shelves and the data storage drives for mounting and demounting the portable data storage cartridges at the data storage drives, and, more particularly, to the virtualization of those data storage drives with respect to host applications which communicate with the library.
Automated data storage libraries are increasingly employed for storage of large quantities of data, typically data that is infrequently accessed by the host applications. The data is stored on portable data storage cartridges which are stored in storage shelves. Examples of portable data storage cartridges are cartridges containing a length of magnetic tape or containing an optical disk.
When the data is accessed by the library, an accessor robot operated by a robot control of the library, grips the desired portable data storage cartridge from the storage shelf at which it is stored and transports the portable data storage cartridge between the storage shelves and data storage drives for mounting and demounting the portable data storage cartridges at the data storage drives, and returning the portable data storage cartridge to the same or a different storage shelf.
Automated data storage libraries are sometimes arranged so that, even in the presence of multiple host applications, the library and its data storage drives appear to each host application as its own library and drives. In one example, a specific set of storage shelves and at least one data storage drive of the library is dedicated to each host application. Upon a request for data from the host application, the portable data storage cartridge having the requesting data is accessed by the accessor robot of the library, and delivered to a data storage drive dedicated to the host application for use by the host application. The host application can thus conduct a series of mounts on a known drive. This is very efficient from the standpoint of the host, since its drive is always available, and the drive addressing is direct and immediate. The library may also appear to be directly assigned to the host application, but the accessor robot is actually shared. It is less efficient from the standpoint of the drive usage in that, if each of the host applications is not constantly using its dedicated data storage drive(s), the drives are often idle. Since the drives are assigned to different host applications, no host application is able to xe2x80x9cborrowxe2x80x9d drives from another host application, and, for example, if all of the assigned drives are utilized and data on a different cartridge is needed, the host application may have to wait until the host application itself demounts one cartridge or releases one drive in order to access data on the other cartridge. Any xe2x80x9cborrowingxe2x80x9d of a drive from another host application would require reconfiguring at least the device drivers for both host applications, potentially requiring a re-IML of each host operating system or application. Should a host application grow in its needs, new drives cannot be assigned to that host application without reconfiguring at least the host application. Should a drive fail and need to be replaced, the host application may be unable to recover from the exception condition, especially if no other drive is available. It may be possible to limit the reconfiguration to a change of serial number if the drives are homogeneous in all other respects. Upgrading, exchange or sharing of heterogeneous drives (drives of at least one different characteristic) is prohibited without a major reconfiguration which will accommodate the different characteristics. Limited drive sharing may be provided by a host application that is partitioned amongst various host processors, but the partitions must constantly inform each other of their use of the drive so as to stay within synchronization, and sharing outside of the host application is not allowed.
In another example, the host applications are not allowed direct communication with a data storage drive. Rather, a xe2x80x9cvirtualxe2x80x9d library is established which employs cache storage (typically disk drives) to store data received from host applications, acting as though the cache storage is a tape drive and is writing the data to tape. The data may be reaccessed while in the cache, called a xe2x80x9ccache hitxe2x80x9d. If not reaccessed, the library downloads the data from the cache storage to a cartridge employing a tape drive selected by the library. When data is requested by the host application, and it is not in cache, called a xe2x80x9ccache missxe2x80x9d, the library employs a table to find the cartridge storing the data, operates the accessor robot to access the cartridge, finds an available tape drive, operates the accessor robot to mount the cartridge on the drive, reads the data from the cartridge and uploads the data to cache. From the standpoint of the library, the usage of the library components is efficient. However, cache storage is expensive and adds cost and complexity. The cache storage must be sufficiently large to handle large data sets and must have good staging and destaging algorithms to avoid excessive xe2x80x9ccache missxe2x80x9d situations. The host applications communicate with the cache rather than directly with a drive, and any host application can contend for use of shared components, leading to less predictable performance.
An object of the present invention is to allow host applications to each gain access to one or more shared data storage drives of an automated data storage library, and have the appearance that the drives are dedicated to the host without requiring cache storage.
Another object of the present invention is to allow the addition, deletion or replacement of drives without requiring a reconfiguration of the host application device driver.
A virtualization system directs communication between host applications and physical data storage drives of an automated data storage library. The library stores a plurality of portable data storage cartridges in storage shelves and provides an accessor robot for transporting the portable data storage cartridges between the storage shelves and the data storage drives.
At least one drive image provider is coupled to the host application, providing at least one image of at least one virtual data storage drive to the host application, providing fixed identifications and fixed sets of responses to the host application for each of the virtual drives, and directing communication between the host application and data storage drives of a pool of xe2x80x9cnxe2x80x9d data storage drives of the automated data storage library.
A drive resource provider is coupled to the drive image providers. At any one time, the drive resource provider has assigned any number xe2x80x9cmxe2x80x9d of the pool of xe2x80x9cnxe2x80x9d physical data storage drives to the drive image providers, and xe2x80x9cnxe2x80x9dxe2x88x92xe2x80x9cmxe2x80x9d of the pool of data storage drives are indicated as freed and available for assignment. The drive resource provider responds to a triggering event requesting a virtual drive for the host application, dedicating one of the xe2x80x9cnxe2x80x9dxe2x88x92xe2x80x9cmxe2x80x9d data storage drives of the pool to the virtual drive, indicating the dedication for a drive image provider for the requesting host application as one of the fixed plurality of virtual drives.
The drive image provider characterizes the dedicated data storage drive to the requesting host application as one of the fixed virtual drives, and directs communication to the dedicated data storage drive by the requesting host application as the virtual drive.
Prior to the drive resource provider dedicating a drive, the drive image provider characterizes the virtual drive to the requesting host application as xe2x80x9cnot readyxe2x80x9d. As an example, xe2x80x9cnot readyxe2x80x9d comprises a reported state that no media is loaded in the drive.
In one embodiment, the triggering event comprises a request by the requesting host application to mount a selected one of the portable data storage cartridges at a virtual data storage drive. The drive resource provider indicates to the-library which one of the xe2x80x9cnxe2x80x9dxe2x88x92xe2x80x9cmxe2x80x9d data storage drives of the pool is the drive dedicated to the host application for mounting the selected portable data storage cartridge.
As an alternative embodiment, the triggering event comprises a xe2x80x9cReservexe2x80x9d request by the requesting host application for a virtual data storage drive of the drive image provider. The xe2x80x9cReservexe2x80x9d request is received by the drive image provider, notifying the drive resource provider as a request for a drive of the pool. The drive resource provider additionally indicates for the library that the dedicated data storage drive is dedicated to the requesting host application for mounting any portable data storage cartridge selected for the data storage drive as identified by the fixed identification as the virtual drive.
As a further alternative embodiment, the triggering event comprises a command by the requesting host application for a virtual data storage drive. The drive resource provider additionally indicates for the library that the dedicated data storage drive is dedicated to the requesting host application for mounting any portable data storage cartridge selected for the data storage drive as identified by the fixed identification as the virtual drive.
The drive resource provider responds to a detriggering event relating to the host application and designating a data storage drive dedicated to the detriggering host application, indicating the data storage drive is freed from the drive image provider, and adds the drive to the freed data storage drives of the pool. In one embodiment, the detriggering event comprises a command by the detriggering host application to demount the one of the portable data storage cartridges from the dedicated data storage drive, identified as one of the virtual data storage drives. In such case, the drive resource provider provides an indication for the library identifying the dedicated data storage drive as the virtual drive at which the portable data storage cartridge is mounted. In another embodiment, the detriggering event comprises a command by the detriggering host application to release the dedicated data storage drive, identified as one of the virtual data storage drive.
In a still further embodiment, the detriggering event comprises non-use of the dedicated data storage drive for a predetermined time-out period. Upon expiration of the predetermined time-out period, the drive resource provider determines whether one of the portable data storage cartridges remains mounted at the dedicated data storage drive, and notifies the library to demount the mounted portable data storage cartridge.
In another embodiment, the library comprises a plurality of virtual libraries, and at least one of the plurality of the virtual libraries is assigned a higher priority. Thus, upon xe2x80x9cmxe2x80x9dxe2x88x92xe2x80x9cnxe2x80x9d equaling zero, meaning that all of the data storage drives are dedicated, and upon a triggering event for a virtual drive of the higher priority virtual library, the drive resource provider deallocates a data storage drive from a lower priority virtual library, notifies the drive image provider of the deallocation, notifies the library to demount any portable data storage cartridge from the deallocated data storage drive, and dedicates the deallocated data storage drive to the virtual drive of the higher priority virtual library.
Additionally, data storage drives may be added, deleted, or exchanged in the pool of data storage drives of the drive resource provider, but the drive image provider characterizes the virtual drives as unchanged.
In one embodiment, the drive resource provider communicates with the drive image provider employing a drive image table having a list of the virtual data storage drives comprising the image, and indicating the data storage drives of the pool dedicated as the virtual drives.
For a fuller understanding of the present invention, reference should be made to the following detailed description taken in conjunction with the accompanying drawings.